/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* getAverages(int* nums, int numsSize, int k, int* returnSize) {
    int *p = (int*)malloc(sizeof(int) * numsSize);
    *returnSize = numsSize;
    long long ans = 0;//long long:解决元素和溢出的可能
    memset(p, -1, numsSize * 4);

    for(int i = 0; i < numsSize; i++){
        ans += nums[i];
        if(i - 2 * k < 0)//如果以 i 为中心，则需要考虑左右边界，但是如果以 i 为边界，则只需要考虑左边界
            p[i] = -1;
        else
            p[i - k] = ans / (2 * k + 1);
        if(i - 2 * k < 0)
            continue;
        ans -= nums[i - 2 * k];
    }
    return p;
}

/*给你一个下标从 0 开始的数组 nums ，数组中有 n 个整数，另给你一个整数 k。

半径为 k 的子数组平均值是指：nums 中一个以下标 i 为中心且半径为 k 的子数组中所有元素的平均值，

即下标在 i - k 和 i + k 范围（含 i - k 和 i + k）内所有元素的平均值。

如果在下标 i 前或后不足 k 个元素，那么半径为 k 的子数组平均值是 -1。

构建并返回一个长度为 n 的数组 avgs ，其中 avgs[i] 是以下标 i 为中心的子数组的半径为 k 的子数组平均值。

x 个元素的平均值是 x 个元素相加之和除以 x，此时使用截断式整数除法，即需要去掉结果的小数部分。

例如，四个元素 2、3、1 和 5 的平均值是 (2 + 3 + 1 + 5) / 4 = 11 / 4 = 2.75，截断后得到 2 。*/